package SwordFingerOffer;

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;

public class Q45_ArrayToMinString {


    //数组重排成最小数字
    // ==> 自定义排序的应用 ==>
    // 谁应该排前谁应该排后 ==>
    // x + y > y + x ==>
    // 则 y 排前 因为结果要求最小
    public String minNumber(int[] nums) {

        //小根堆
        //主要理解这个自定义排序的写法
        Queue<String> heap = new PriorityQueue<>(new Comparator<String>() {
            @Override
            // end o1 > 02 ==> if o1 + o2 < o2 + o1
            public int compare(String o1, String o2) {
                return (o1 + o2).compareTo(o2 + o1);
            }
        });

        //其余的放入堆中再拼接就好了
        for (int num : nums) {
            heap.add(num + "");
        }
        StringBuilder sb = new StringBuilder();
        while (!heap.isEmpty()){
            sb.append(heap.poll()) ;
        }

        return sb.toString();

    }
}
